package com.xx.design.exception.ass;


/**
 * @author EDY
 */
public abstract class AbstractAssert implements Assert, ExceptionProvider {

    /**
     * 断言对象 obj 非空。如果对象 obj 为空，则抛出异常
     * 异常信息 message 支持传递参数方式，避免在判断之前进行字符串拼接操作
     *
     * @param obj     待判断对象
     * @param message message占位符对应的参数列表
     */
    @Override
    public void assertNotNull(Object obj, String message) {
        if (obj == null) {
            throw newException(message);
        }
    }

    /**
     * 断言true
     *
     * @param bool    条件
     * @param message 异常消息
     */
    @Override
    public void assertTrue(Boolean bool, String message) {
        if (!(bool != null && bool)) {
            throw newException(message);
        }
    }

    /**
     * 断言为null
     *
     * @param obj     待判断对象
     * @param message 异常提示消息
     */
    @Override
    public void assertNull(Object obj, String message) {
        if (obj != null) {
            throw newException (message);
        }
    }
}
